package com.gep.controlador;

import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

import com.gep.controlador.util.Mensagem;
import com.gep.dto.UsuarioDTO;
import com.gep.session.UsuarioBORemota;

public class ControladorLoginZul extends Window {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Textbox user;

	public Textbox password;

	public Label msgErro;

	private UsuarioBORemota usuarioBORemota;

	public ControladorLoginZul() {
		try {
			InitialContext ctx;

			ctx = new InitialContext();
			this.usuarioBORemota = (UsuarioBORemota) ctx
					.lookup("ejb/gep/UsuarioBORemota");
		} catch (Exception exp) {
			exp.printStackTrace(System.out);
		}
	}

	public void efetuarLogin() {
		try {
			user = (Textbox) this.getFellow("user");
			password = (Textbox) this.getFellow("password");
			msgErro = (Label) this.getFellow("msgErro");

			UsuarioDTO usuario = new UsuarioDTO();
			if (!user.getValue().trim().equals("")
					&& !password.getValue().equals("")) {
				usuario.setLogin(user.getValue());
				usuario.setSenha(password.getValue());

				if (usuarioBORemota.validarLogin(usuario)) {
					HttpServletRequest request = (HttpServletRequest) Executions
							.getCurrent().getNativeRequest();
					HttpSession session = request.getSession(false);
					usuario = usuarioBORemota.buscarUsuarios(usuario)
							.iterator().next();
					session.setAttribute("usuarioDTO", usuario);
					Executions.sendRedirect("/zul/home.zul");

				} else {
					msgErro.setValue("Usuario ou senha invalidos");
				}
			} else {
				msgErro.setValue("Usuario ou senha invalidos");
			}

		} catch (Exception e) {
			Mensagem.EXIBIR("Erro ao Logar", "ERRO");
		}
	}

	public static final UsuarioDTO getUsuarioDTOSessao() {
		UsuarioDTO usuarioDTO;
		HttpServletRequest request = (HttpServletRequest) Executions
				.getCurrent().getNativeRequest();
		HttpSession session = request.getSession(false);
		usuarioDTO = (UsuarioDTO) session.getAttribute("usuarioDTO");
		return usuarioDTO;
	}

	public static final void Logout() {
		try {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("usuarioDTO", null);
			Executions.sendRedirect("/zul/login.zul");
		} catch (Exception e) {
			Mensagem.EXIBIR("Erro de conexao", "ERRO");
		}
	}

}
